home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / LAN / LANDRIVE.M < prev    next >
Encoding:
Text File  |  1991-08-18  |  3.3 KB  |  3 lines

  1. ⓪ MODULE LANDriver; (*$H+,Z+,S-,R-*)⓪ ⓪ IMPORT TOSIO;⓪ FROM InOut IMPORT Write, WriteString, ReadCard;⓪ ⓪ IMPORT SYSTEM;⓪ FROM SYSTEM IMPORT ASSEMBLER, ADR, WORD, BYTE, ADDRESS;⓪ ⓪ IMPORT ALAP;⓪ ⓪ IMPORT MOSGlobals, PrgCtrl, ModCtrl;⓪ FROM GEMDOS IMPORT Super;⓪ ⓪ ⓪ CONST DataLAP = $20;    (* LAP-Type für Daten *)⓪ ⓪ VAR ch: CHAR;⓪$rxIdx, n, c: CARDINAL;⓪$lc: LONGCARD;⓪$i: INTEGER;⓪$ssp, li: LONGINT;⓪$redraw, quit, ok, b: BOOLEAN;⓪$myaddr: CARDINAL;⓪$sentDatas,sendTrials,rcvdDatas: LONGCARD;⓪$⓪$txFrame: ALAP.aTxFrame;⓪$packet: ALAP.ptrPacket;⓪$dstParam, srcParam: ALAP.anAddress;⓪$typeParam: ALAP.aLAPtype;⓪$dataParam: ALAP.aDataField;⓪$txStatus: ALAP.TransmitStatus;⓪$frameStatus: ALAP.FrameStatus;⓪$dataLength: INTEGER;⓪$⓪$bos: ARRAY [1..400] OF WORD; tos: WORD;⓪ ⓪ VAR trapV [$80]: PROC; oldv: PROC;⓪ ⓪ (*$L-*)⓪ ⓪ PROCEDURE trapHandler;⓪"BEGIN⓪$ASSEMBLER⓪(; cmd-code in D0⓪(MOVE.L  A3,-(A7)⓪(MOVE.L  A2,-(A7)⓪(MOVE.L  A7,A2⓪(LEA     tos,A7⓪(LEA     bos,A3⓪(MOVE.L  A2,-(A7)⓪(BREAK⓪(SUBQ    #1,D2⓪(BMI     getFrame⓪(BEQ     sendFrame⓪(⓪(; Init⓪(MOVE.W  myaddr,D0⓪(JSR     ALAP.Init⓪(JSR     ALAP.NewPacketBuffer⓪(JSR     ALAP.NewPacketBuffer⓪(JSR     ALAP.NewPacketBuffer⓪(MOVEQ   #1,D0⓪(BRA     exit⓪(⓪&getFrame:⓪(MOVE.L  A0,-(A7)        ;rette ^Ziel-Puffer⓪(MOVE.L  #packet,(A3)+⓪(JSR     ALAP.ReceiveFrame/⓪(MOVE.L  (A7)+,A0⓪(CMPI    #ALAP.lapDATAframe,D0⓪(BEQ     dataOK⓪(MOVEQ   #0,D0           ;error!⓪(BRA     exit⓪&dataOK:⓪(MOVE.L  packet,A1⓪(CMPI.B  #DataLAP,ALAP.aPacket.frame.lapType(A1)⓪(; 4 Byte-Header schreiben⓪(MOVE.B  D0,(A0)+⓪(CLR.B   (A0)+⓪(MOVE.W  ALAP.aPacket.length(A1),D0⓪(MOVE.W  D0,(A0)+⓪(; Daten schreiben⓪(LEA     ALAP.aPacket.frame.dataField(A1),A1⓪(ADDQ    #1,D0⓪(LSR     #1,D0⓪(BRA     copys⓪©l:⓪(MOVE.W  (A1)+,(A0)+⓪©s:⓪(DBRA    D0,copyl⓪(MOVEQ   #1,D0⓪(BRA     exit⓪(⓪&sendFrame:⓪(LEA     txFrame,A2⓪(MOVE.B  5(A0),ALAP.aTxFrame.ctrl.dstAddr(A2) ; Low-Byte der Ethernet-Adresse⓪(MOVE.W  myaddr,D2⓪(MOVE.B  D2,ALAP.aTxFrame.ctrl.srcAddr(A2)⓪(MOVE.B  #DataLAP,ALAP.aTxFrame.ctrl.lapType(A2)⓪(LEA     ALAP.aTxFrame.dataPtr1(A2),A1⓪(MOVE.L  A0,(A1)+⓪(MOVE.W  D0,(A1)+⓪(MOVE.L  A1,(A1)+⓪(MOVE.W  D1,(A1)+⓪(JSR     ALAP.TransmitPacket⓪(⓪&exit:⓪(MOVE.L  (A7)+,A7⓪(MOVE.L  (A7)+,A2⓪(MOVE.L  (A7)+,A3⓪(RTE⓪$END⓪"END trapHandler;⓪ ⓪ (*$L+*)⓪ ⓪ PROCEDURE removal;⓪"BEGIN⓪$ssp:= Super (0);⓪$trapV:= oldv;⓪$ssp:= Super (ssp);⓪"END removal;⓪ ⓪ BEGIN⓪"IF ModCtrl.FirstModuleStart () THEN⓪$WriteString ('Adresse? ');⓪$ReadCard (myaddr);⓪$ssp:= Super (0);⓪$oldv:= trapV;⓪$trapV:= trapHandler;⓪$ssp:= Super (ssp);⓪$ModCtrl.InstallModule (removal, MOSGlobals.MemArea{NIL,0})⓪"ELSE⓪$removal;⓪$ModCtrl.ReleaseModule⓪"END⓪ END LANDriver.⓪ ə
  2. (* $FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$00000A7B$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$FFF006F0$00000A5EÇ$000004BAT.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$00000507$000007F7$00000804$00000797$000007A3$FFF006F0$000008CC$FFF006F0$FFF006F0$000008C3$000008B9$000008C3$000004D6$000004BA$0000041D$0000050FÕüé*)
  3.